小编典典

忽略的后果是什么:警告:未使用的参数

all

我正在处理一个 C++ 项目,我注意到我们有许多关于未使用参数的警告。

如果忽略这些警告会产生什么影响?


阅读 243

收藏
2022-04-22

共1个答案

小编典典

在以下情况下,带有未使用参数的函数可能会出现真正的错误:

  1. 有一个未分配或写入的输出参数,导致调用者的值未定义。
  2. 参数之一是回调函数指针,您必须调用它而忘记这样做。如果函数中有很多#ifdefs,可能会发生。
  3. 您声明了一个具有相同名称的局部变量,它隐藏了一个参数,随后在函数中使用了错误的值。

不使用输入参数可能void是无害的,但您可以通过将未使用的输入参数强制转换为(适用于 C 和 C++)在函数开头显式标记未使用的输入参数来减少噪音以查看有用的警告:

(void)param1;

或者,

#define UNUSED(expr) do { (void)(expr); } while (0)
...

void foo(int param1, int param2)
{
    UNUSED(param2);
    bar(param1);
}

或省略参数名称(仅限 C++):

void foo(int param1, int /*param2*/)
{
    bar(param1);
}
2022-04-22